package com.mvprxjavartrofit.ui.login;

import com.mvprxjavartrofit.base.BaseModel;
import com.mvprxjavartrofit.base.BasePresenter;
import com.mvprxjavartrofit.base.BaseView;

import rx.Subscription;


/**
 * 宗旨：纯粹界面操作交互，不需要MP参与的行为，尽量V自己做，P只有干净简洁的协助
 * VM的业务逻辑操作，M只处理数据操作,保证MVP职责清晰，。相比谷歌官方Contract类，
 * 多了一个Model，用于将P中繁杂的数据操作分离解耦，让P层变得简洁明了,只处理M和V
 * 相关操作即可
 */
public interface LoginContract {
    //M
    interface Model extends BaseModel{
        interface LoginListener{
            void showMessage(String message);
            void showSucc();
        }

        Subscription login(LoginListener listener);
    }

    //V
    interface View extends BaseView{
        void showMessage(String message);
        void showProgress();
        void dismissProgress();
        void showSucc();
    }

    //P
    abstract class Presenter extends BasePresenter<Model, View>{
        public abstract void login();

        @Override
        public void onStart() {

        }
    }
}
